package com.sg.dto.biz.bff.res;


import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * @desc BffOrgInductionRecordDto
 * @使用场景
 */
@Data
public class BffOrgInductionRecordDto implements Serializable {

    /**
     * 冗余部门名称:
     */
    @ApiModelProperty("冗余部门名称")
    private String deptShortName;

    /**
     * 必选冗余职务名称:
     */
    @ApiModelProperty("必选冗余职务名称")
    private String positionIdName;
    /**
     * 就职记录ID:
     */
    @ApiModelProperty("就职记录ID")
    private String inductionRecordId;
    /**
     * 组织ID:
     */
    @ApiModelProperty("组织ID")
    private String organizationId;
    /**
     * 就职单位类型实例:
     */
    @ApiModelProperty("就职单位类型实例")
    private String inductionUnitTypeCode;
    /**
     * 就职单位对象实例ID:
     */
    @ApiModelProperty("就职单位对象实例ID")
    private String entityId;
    /**
     * 冗余可选职务ID:
     */
    @ApiModelProperty("冗余可选职务ID")
    private String positionId;
    /**
     * 冗余组织名称:
     */
    @ApiModelProperty("冗余组织名称")
    private String organizationName;
    /**
     * 个人职务排序:
     */
    @ApiModelProperty("个人职务排序")
    private String positionOrderNumber;
    /**
     * 冗余职务角色编码:
     */
    @ApiModelProperty("冗余职务角色编码")
    private String positionRoleCode;
    /**
     * 部门标识:
     */
    @ApiModelProperty("部门标识")
    private String deptCode;
    /**
     * 层级:
     */
    @ApiModelProperty("层级")
    private Long levelNumber;
    /**
     * 职务性质:
     */
    @ApiModelProperty("职务性质")
    private String positionType;
    /**
     * 部门ID:
     */
    @ApiModelProperty("就职单位对象实例ID")
    private String deptId;
    /**
     * 身份人员ID:
     */
    @ApiModelProperty("身份人员ID")
    private String originalRoleMemberId;
    /**
     * 身份人员编号:
     */
    @ApiModelProperty("身份人员编号")
    private String roleMemberCode;
    /**
     * 个人账号ID:
     */
    @ApiModelProperty("个人账号ID")
    private String userId;
    /**
     * 真实头像:
     */
    @ApiModelProperty("真实头像")
    private String userFace;
    /**
     * 真实姓名:
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;
    /**
     * 用户昵称:
     */
    @ApiModelProperty("用户昵称")
    private String nickName;
    /**
     * 备注首位字母:
     */
    @ApiModelProperty("备注首位字母")
    private String firstLetter;
    /**
     * 是否兼职:
     */
    @ApiModelProperty("是否兼职")
    private String isPtJob;
    /**
     * 是否异动:
     */
    @ApiModelProperty("是否异动")
    private String isTransaction;
    /**
     * 部门成员排序:
     */
    @ApiModelProperty("部门成员排序")
    private Long deptMemberOrderNumber;
    /**
     * 批次下更新状态:
     */
    @ApiModelProperty("批次下更新状态")
    private String updateStatus;
    /**
     * 是否主岗 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否主岗")
    private String isMainInduction;

    /**
     * 可选主管就职记录ID
     */
    @ApiModelProperty("可选主管就职记录ID")
    private String directorInductionRecordId;
    /**
     * 是否主管 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否主管")
    private String isDirector;
    /**
     * 部门业务身份 EDUCATIONAL_ADMINISTRATION:教务 TEACHING_DEPARTMENT:教学部门 LEARNING_INDUSTRIAL_PRODUCTION:学工 PERSONNEL_MATTERS:人事 FINANCE:财务 SCHOOL_LEADER:校领导
     */
    @ApiModelProperty("部门业务身份")
    private String deptBusinessIdentity;
    /**
     * 数据值结果
     */
    @ApiModelProperty("数据值结果")
    private Double dataResult;

    /**
     * 冗余单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:1111百分率 PORTION:份 %:%
     */
    @ApiModelProperty("冗余单位")
    private String unit;

    /**
     * 周期类型实例简称
     */
    @ApiModelProperty("周期类型实例简称")
    private String cycleNumberShortName;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffOrgInductionRecordDto that = (BffOrgInductionRecordDto) o;
        return deptShortName == that.deptShortName && positionIdName == that.positionIdName && inductionRecordId == that.inductionRecordId && organizationId == that.organizationId && inductionUnitTypeCode == that.inductionUnitTypeCode && entityId == that.entityId && positionId == that.positionId && organizationName == that.organizationName && positionOrderNumber == that.positionOrderNumber && positionRoleCode == that.positionRoleCode && deptCode == that.deptCode && levelNumber == that.levelNumber && positionType == that.positionType && deptId == that.deptId && originalRoleMemberId == that.originalRoleMemberId && roleMemberCode == that.roleMemberCode && userId == that.userId && userFace == that.userFace && idCardName == that.idCardName && nickName == that.nickName && firstLetter == that.firstLetter && isPtJob == that.isPtJob && isTransaction == that.isTransaction && deptMemberOrderNumber == that.deptMemberOrderNumber && updateStatus == that.updateStatus && isMainInduction == that.isMainInduction && directorInductionRecordId == that.directorInductionRecordId && isDirector == that.isDirector && deptBusinessIdentity == that.deptBusinessIdentity && dataResult == that.dataResult && unit == that.unit && cycleNumberShortName == that.cycleNumberShortName;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), deptShortName, positionIdName, inductionRecordId, organizationId, inductionUnitTypeCode, entityId, positionId, organizationName, positionOrderNumber, positionRoleCode, deptCode, levelNumber, positionType, deptId, originalRoleMemberId, roleMemberCode, userId, userFace, idCardName, nickName, firstLetter, isPtJob, isTransaction, deptMemberOrderNumber, updateStatus, isMainInduction, directorInductionRecordId, isDirector, deptBusinessIdentity, dataResult, unit, cycleNumberShortName);
    }
}
